cabal-version:      2.2
name:               finitary-optics
version:            1.0.0.0
synopsis:           Prisms and Isos between finitary types.
description:
  Provides convenience optics for working with finitary types.
  Specifically gives an Iso for inter-converting between types
  of the same cardinality, and a Prism for inter-converting
  between types of different cardinalities.

homepage:           https://notabug.org/sheaf/finitary-optics
license:            GPL-3.0-or-later
license-file:       LICENSE.md
author:             Koz Ross
maintainer:         Sam Derbyshire
copyright:          (C) Koz Ross 2019
category:           Data
tested-with:        GHC ==8.6.5 || ==8.8.3 || ==8.10.1 || ==9.0.1
build-type:         Simple
extra-source-files:
  CHANGELOG.md
  README.md

common common-lang
  ghc-options:
    -Wall -Wcompat -Wincomplete-record-updates
    -Wincomplete-uni-patterns -Wredundant-constraints

  default-language: Haskell2010

library
  import:          common-lang
  exposed-modules: Data.Finitary.Optics
  build-depends:
    , base             >=4.12    && <5
    , finitary         ^>=2.0.0.0
    , finite-typelits  ^>=0.1.4.2
    , optics-core      ^>=0.3

  hs-source-dirs:  src

test-suite tests
  import:         common-lang
  type:           exitcode-stdio-1.0
  main-is:        Main.hs
  build-depends:
    , base
    , finitary-optics
    , hedgehog         ^>=1.0.2
    , hspec            ^>=2.7.1
    , hspec-hedgehog   ^>=0.0.1.2
    , optics-core

  ghc-options:    -threaded -with-rtsopts=-N
  hs-source-dirs: test
